Go 时间

Go提供了对时间和一段时间的支持。这里有一些例子。

  1. package main
  2. import "fmt"
  3. import "time"
  4. func main() {
  5. p := fmt.Println
  6. // 从获取当前时间开始
  7. now := time.Now()
  8. p(now)
  9. // 你可以提供年,月,日等来创建一个时间。当然时间
  10. // 总是会和地区联系在一起,也就是时区
  11. then := time.Date(2009, 11, 17, 20, 34, 58, 651387237, time.UTC)
  12. p(then)
  13. // 你可以获取时间的各个组成部分
  14. p(then.Year())
  15. p(then.Month())
  16. p(then.Day())
  17. p(then.Hour())
  18. p(then.Minute())
  19. p(then.Second())
  20. p(then.Nanosecond())
  21. p(then.Location())
  22. // 输出当天是周几,Monday-Sunday中的一个
  23. p(then.Weekday())
  24. // 下面的几个方法判断两个时间的顺序,精确到秒
  25. p(then.Before(now))
  26. p(then.After(now))
  27. p(then.Equal(now))
  28. // Sub方法返回两个时间的间隔(Duration)
  29. diff := now.Sub(then)
  30. p(diff)
  31. // 可以以不同的单位来计算间隔的大小
  32. p(diff.Hours())
  33. p(diff.Minutes())
  34. p(diff.Seconds())
  35. p(diff.Nanoseconds())
  36. // 你可以使用Add方法来为时间增加一个间隔
  37. // 使用负号表示时间向前推移一个时间间隔
  38. p(then.Add(diff))
  39. p(then.Add(-diff))
  40. }

运行结果

  1. 2014-03-02 22:54:40.561698065 +0800 CST
  2. 2009-11-17 20:34:58.651387237 +0000 UTC
  3. 2009
  4. November
  5. 17
  6. 20
  7. 34
  8. 58
  9. 651387237
  10. UTC
  11. Tuesday
  12. true
  13. false
  14. false
  15. 37578h19m41.910310828s
  16. 37578.328308419674
  17. 2.2546996985051804e+06
  18. 1.3528198191031083e+08
  19. 135281981910310828
  20. 2014-03-02 14:54:40.561698065 +0000 UTC
  21. 2005-08-05 02:15:16.741076409 +0000 UTC